package cn.buk.jedis;

import java.nio.charset.Charset;
import java.util.List;
import java.util.Set;

/**
 *
 * @author yfdai
 * @date 2015-3-29
 */
public interface RedisDao {

    byte[] get(String key);
    String getStr(String key);
    String getStr(String key, Charset charset);

    int incr(String key, int expiredSeconds);
    int incrApiCallCount(String key, int expiredSeconds, int maxCalls);

    String set(String key, byte[] value);

    String set(String key, byte[] value, long expiredTime);

    String setAndExpire(String key, byte[] value, int seconds);
    String setAndExpireAt(String key, byte[] value, long unixTime);

    //list
    int addToList(String key, String value);
    int getListCount(String key);
    List<String> getAllAndEmptyList(String key);



    Boolean exists(String key);

    int remove(String key);

    /**
     * 获取集合key中得所有成员
     * @param key
     * @return
     */
    Set<String> smembers(String key);

    /**
     * 取得集合key中得成员数量
     * @param key
     * @return
     */
    long scard(String key);

    /**
     * 向集合key中增加元素
     * @param key
     * @param elements
     * @return
     */
    long sadd(String key, List<String> elements);
    long sadd(String key, String value);

    /**
     * 取集合key1和key2的差集
     * @param key1
     * @param key2
     * @return
     */
    Set<String> sdiff(String key1, String key2);


}
